home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
mac
/
LOGIC Apple II 5.25" Library - ProDOS
/
PRO050.dsk
/
BAL.bas
next >
Wrap
BASIC Source File
|
2012-02-16
|
11KB
|
321 lines
10 GOSUB 62000
20 D$ = CHR$(4)
30 ONERR GOTO 50000
40 PRINT D$;"PR#3"
1500 PRINT D$;"OPEN /RAM/RECON.BAL.DATA"
1510 PRINT D$;"READ /RAM/RECON.BAL.DATA"
1520 INPUT PRB$
1530 PRINT D$;"CLOSE /RAM/RECON.BAL.DATA"
1800 PRB = VAL(PRB$)
1910 CALL -912
2000 GOTO 4000
2200 REM READ TIME
2205 IF FC = 1 THEN TM$ = "": RETURN
2210 PRINT D$;"IN#4": PRINT D$;"PR#4"
2220 INPUT ":";CK$
2230 PRINT D$;"IN#0": PRINT D$;"PR#0"
2240 PRINT D$;"PR#3"
2260 TM$ = MID$ (CK$,12,2) +":" + MID$ (CK$,15,2)
2270 X$ = LEFT$(TM$,2):X = VAL( MID$ (CK$,12,2))
2280 IF X <12 THEN TM$ = TM$ +" A.M.": RETURN
2290 IF X <13 THEN TM$ = TM$ +" P.M.": RETURN
2300 X = X -12:X$ = STR$(X):TM$ = X$ + RIGHT$(TM$,3) +" P.M."
2310 RETURN
4000 REM BALANCING
4002 RBL = 0
4005 HOME
4008 HTAB 15: VTAB 2: PRINT "ENTER INTEREST FOR MONTH AND SAVE DATA BEFORE BALANCING"
4009 HTAB 15: PRINT "-------------------------------------------------------"
4010 HTAB 13: VTAB 6: PRINT "ENTER A BEGINNING TRANSACTION NUMBER, <M> FOR MAIN MENU, OR "
4015 HTAB 19: PRINT "<B> TO BEGIN WITH FIRST UNRECONCILED TRANSACTION"
4020 IN$ = "":H = 39:V = 10
4030 HTAB H: VTAB V
4040 IF FF = 1 THEN FF = 0: HTAB H: VTAB V: PRINT IN$;" ": GOTO 4060
4050 PRINT IN$
4060 HH = H + LEN(IN$): HTAB HH: VTAB V
4070 GET X$
4080 IF X$ = CHR$(13) THEN 4200
4090 IF X$ = CHR$(10) OR X$ = CHR$(11) THEN 4030
4100 IF X$ = CHR$(21) THEN 4030
4110 IF X$ = CHR$(8) OR X$ = CHR$(127) THEN FF = 1: IF LEN(IN$) <2 THEN 4000
4120 IF FF = 1 THEN IN$ = LEFT$(IN$, LEN(IN$) -1): GOTO 4030
4130 IF X$ = CHR$(27) THEN 40000
4140 IF X$ = "M" OR X$ = "m" THEN 40000
4145 IF X$ = "B" OR X$ = "b" THEN 5000
4150 IF ASC(X$) <48 OR ASC(X$) >57 THEN 4030
4160 IN$ = IN$ +X$
4170 GOTO 4030
4200 BTN$ = IN$
4500 BTN = VAL(BTN$)
4505 IF BTN >FTN% THEN HTAB 25: VTAB 21: PRINT "THIS TRANSACTION DOES NOT EXIST": HTAB 40: VTAB 22: GET X$: GOTO 4000
4510 M = BTN -1
4520 GOTO 10000
5000 REM GET STARTING POINT
5010 PRINT D$;"OPEN /RAM/MAIN.DATA,L$96"
5020 ZN = FTN% -1
5030 FOR I = 1 TO ZN
5040 TN = I
5050 PRINT D$;"READ /RAM/MAIN.DATA,R";TN
5060 INPUT TN%
5070 INPUT DT$
5080 INPUT CN$
5090 INPUT AMT$
5100 INPUT PY$
5110 INPUT R$
5120 IF R$ = "R" THEN NEXT
5125 PRINT D$;"CLOSE /RAM/MAIN.DATA"
5130 IF TN <4 THEN BTN = 1: GOTO 5150
5140 BTN = TN -3
5150 M = BTN -1
10000 REM BALANCING
10010 V = 3: HOME
10020 IF PF = 1 THEN PRINT D$;"PR#1"
10030 VTAB 1: PRINT "TR#";
10040 HTAB 6: PRINT "DATE";
10050 HTAB 16: PRINT "CK#";
10060 HTAB 22: PRINT "PAY TO:";
10070 HTAB 48: PRINT "R";
10080 HTAB 51: PRINT "AMOUNT";
10090 HTAB 61: PRINT "CAT";
10100 HTAB 70: PRINT "MEMO"
10110 VTAB 2: PRINT "-------------------------------------------------------------------------------"
10120 POKE 34,2
10130 MTN = BTN:TN = MTN:M = 1
10140 IF PF = 1 THEN PRINT D$;"PR#0"
10150 PRINT D$;"OPEN /RAM/MAIN.DATA,L$96"
10160 FOR I = M TO 19 +M
10170 IF TN = FTN% THEN 10710
10180 PRINT D$;"READ /RAM/MAIN.DATA,R";TN
10190 INPUT TN%
10200 INPUT DT$
10210 INPUT CN$
10220 INPUT AMT$
10230 RA$(I) = AMT$
10240 GOSUB 63000: LET PY$ = IN$
10250 IF F = 1 THEN F = 1: IF TP$ < > LEFT$(PY$, LEN(TP$)) THEN 10700
10255 INPUT R$
10257 IF R$ = "R" THEN RA$(I) = "0.00"
10260 INPUT CTG$
10270 GOSUB 63000: LET MEM$ = IN$
10500 REM PRINT
10510 IF PF = 1 THEN PRINT D$;"PR#1"
10520 VTAB V: PRINT TN%;
10530 HTAB 6: PRINT DT$;
10540 HTAB 16: PRINT CN$;
10550 HTAB 22: PRINT LEFT$(PY$,25);
10560 HTAB 48: PRINT R$;
10570 AMT = VAL(AMT$): IF AMT <0 THEN AMT = -1 *AMT
10575 J = AMT *100:Z$ = STR$( INT(J +.01)): IF LEN(Z$) = 1 THEN Z$ = "0" +Z$
10590 Y = LEN(Z$) -2
10600 IF Y <0 THEN Z$ = AMT$
10610 IF Y < = 0 THEN Y = 1
10620 H = 56 -Y
10630 HTAB H: PRINT INT(AMT +.001);"."; RIGHT$(Z$,2);
10650 HTAB 61: PRINT CTG$;
10660 HTAB 70: PRINT LEFT$(MEM$,10);
10670 IF PF = 1 THEN PRINT D$;"PR#0"
10680 V = V +1: IF V = 24 THEN V = 23
10690 TN = TN +1
10695 RO$(I) = R$
10700 NEXT
10710 PRINT D$;"CLOSE /RAM/MAIN.DATA"
10720 VB = V -1
10730 IF PF = 1 THEN PRINT D$;"PR#1"
10740 PRINT
10750 PRINT "------------------------------------------------------------------------------"
10760 POKE 35,22: CALL -958
10770 HTAB 5: VTAB 24: PRINT "MARK <R>ETURNED TRANSACTIONS, GOTO <N>EXT FIELD, OR PRESS <ESC> TO EXIT";
10780 V = 3:H = 48
10790 HTAB 48: VTAB 3:I = M
11000 GET X$
11010 IF X$ = CHR$(27) THEN POKE 35,24: POKE 34,0: GOSUB 14000: GOTO 4000
11015 IF X$ = "N" OR X$ = "n" THEN 12000
11020 IF X$ = CHR$(11) THEN : GOTO 11100
11030 IF X$ = CHR$(10) THEN : GOTO 11120
11035 IF RO$(I) = "R" THEN X$ = "R"
11040 IF X$ = "R" OR X$ = "r" THEN R$(I) = "R": HTAB 48: VTAB V: PRINT "R";: GOTO 11070
11050 IF X$ = CHR$(13) OR X$ = CHR$(32) THEN R$(I) = " ": HTAB 48: VTAB V: PRINT " ";: GOTO 11070
11060 IF X$ < >"R" THEN 11000
11070 IF V = VB THEN HTAB H: GOTO 11000
11080 V = V +1:TN = TN +1:I = I +1
11090 HTAB H: VTAB V: GOTO 11000
11100 IF V = 3 THEN 11000
11110 TN = TN -1:V = V -1:I = I -1: GOTO 11090
11120 IF V = VB THEN 11000
11130 TN = TN +1:V = V +1:I = I +1: GOTO 11090
12000 REM NEXT GROUP
12010 HTAB 79: VTAB 2: CALL -958
12020 M = M +20:MTN = MTN +20:TN = MTN
12030 IF TN > = FTN% THEN 13000
12040 V = 3: POKE 35,24: GOTO 10140
13000 REM CALCULATE RECONCILED BALANCE
13010 POKE 35,24: POKE 34,0: HOME
13020 FOR I = 1 TO ZN -BTN +2
13030 IF R$(I) = "R" THEN RBL = RBL + VAL(RA$(I))
13040 NEXT
13050 RBL = -1 *RBL
13060 IF RBL <0 THEN TRBL = RBL * -1: GOTO 13080
13070 TRBL = RBL
13080 J = TRBL *100:Z$ = STR$( INT(J +.01)): IF LEN(Z$) = 1 THEN Z$ = "0" +Z$
13110 RB$ = STR$( INT(TRBL +.001)) +"." + RIGHT$(Z$,2)
13120 HTAB 5: VTAB 5: PRINT "THE BALANCE OF THE RECONCILED TRANSACTIONS FOR THIS MONTH IS $ ";
13130 IF RBL <0 THEN PRINT "-";RB$: GOTO 13150
13140 PRINT RB$
13150 PRB = PRB +RBL
13160 IF PRB <0 THEN TPRB = PRB * -1: GOTO 13180
13170 TPRB = PRB
13180 J = TPRB *100:Z$ = STR$( INT(J +.01)): IF LEN(Z$) = 1 THEN Z$ = "0" +Z$
13210 PRB$ = STR$( INT(TPRB +.001)) +"." + RIGHT$(Z$,2)
13220 HTAB 10: VTAB 7: PRINT "IF THE BANK'S BALANCE IS $ ";
13230 IF PRB <0 THEN PRINT "-";PRB$;" THE ACCOUNT IS BALANCED": GOTO 13250
13240 PRINT PRB$;" THE ACCOUNT IS BALANCED"
13250 HTAB 5: VTAB 16: PRINT "WOULD YOU LIKE TO <R>EBALANCE, <P>RINT A STATEMENT, <`>ENTER THIS DATA,"
13260 HTAB 30: VTAB 17: PRINT " OR GOTO <M>AIN MENU?"
13270 HTAB 40: VTAB 18: GET X$
13280 IF X$ = "R" OR X$ = "r" THEN GOSUB 14000: GOTO 4000
13290 IF X$ = "P" OR X$ = "p" THEN 20000
13300 IF X$ = "`" OR X$ = "~" THEN 30000
13310 IF X$ = "M" OR X$ = "m" THEN GOSUB 14000: GOTO 40000
13320 IF X$ < >"m" THEN 13270
14000 REM PREVENT MISCALCULATION
14010 IF RBL <0 THEN RBL$ = "-" +RBL$
14020 IF PRB <0 THEN PRB$ = "-" +PRB$
14030 PRB = VAL(PRB$) - VAL(RBL$):PRB$ = STR$(PRB):RBL = 0
14040 FOR I = 1 TO 100
14050 R$(I) = " "
14060 NEXT
14070 RETURN
20000 REM GET DATA TO PRINT RECONCILIATION STATEMENT
20001 HOME
20002 PRINT D$;"PR#1"
20005 VTAB 1: PRINT "TR#";
20010 HTAB 6: PRINT "DATE";
20020 HTAB 16: PRINT "CK#";
20030 HTAB 22: PRINT "PAY TO:";
20040 HTAB 48: PRINT "R";
20050 HTAB 51: PRINT "AMOUNT";
20060 HTAB 61: PRINT "CAT";
20065 HTAB 70: PRINT "MEMO"
20069 VTAB 2: PRINT "-------------------------------------------------------------------------------"
20070 PRINT D$;"PR#0"
21000 REM PRINT THE RECONCILIATION STATEMENT
21010 M = 1
21030 PRINT D$;"OPEN /RAM/MAIN.DATA,L$96"
21040 FOR I = BTN TO FTN% -1
21060 PRINT D$;"READ /RAM/MAIN.DATA,R";I
21070 INPUT TN%
21080 INPUT DT$
21090 INPUT CN$
21100 INPUT AMT$
21120 GOSUB 63000: LET PY$ = IN$
21140 R$ = R$(M)
21150 INPUT CTG$
21160 GOSUB 63000: LET MEM$ = IN$
21170 PRINT D$
22000 PRINT D$;"PR#1"
22010 VTAB V: PRINT TN%;
22020 HTAB 6: PRINT DT$;
22030 HTAB 16: PRINT CN$;
22040 HTAB 22: PRINT LEFT$(PY$,25);
22050 HTAB 48: PRINT R$;
22060 AMT = VAL(AMT$): IF AMT <0 THEN AMT = -1 *AMT
22070 J = AMT *100:Z$ = STR$( INT(J +.01)): IF LEN(Z$) = 1 THEN Z$ = "0" +Z$
22080 Y = LEN(Z$) -2
22090 IF Y <0 THEN Z$ = AMT$
22100 IF Y < = 0 THEN Y = 1
22110 H = 56 -Y
22120 HTAB H: PRINT INT(AMT +.001);"."; RIGHT$(Z$,2);
22140 HTAB 61: PRINT CTG$;
22150 HTAB 70: PRINT LEFT$(MEM$,10)
22160 PRINT D$;"PR#0"
22180 M = M +1
22190 NEXT
22195 PRINT D$;"CLOSE /RAM/MAIN.DATA"
23000 PRINT D$;"PR#1"
23030 PRINT "------------------------------------------------------------------------------"
23365 PRINT
23370 HTAB 5: PRINT "THE BALANCE OF THE RECONCILED TRANSACTIONS FOR THIS MONTH IS $ ";
23380 IF RBL <0 THEN PRINT "-";RB$: GOTO 23445
23390 PRINT RB$
23445 PRINT
23450 HTAB 10: PRINT "IF THE BANK'S BALANCE IS $ ";
23460 IF PRB <0 THEN PRINT "-";PRB$;" THE ACCOUNT IS BALANCED": GOTO 23475
23470 PRINT PRB$;" THE ACCOUNT IS BALANCED"
23475 PRINT D$;"PR#0":PF = 0
23478 HOME
23480 HTAB 5: VTAB 16: PRINT "WOULD YOU LIKE TO <R>EBALANCE, <P>RINT A STATEMENT, <`>ENTER THIS DATA,"
23490 HTAB 30: VTAB 17: PRINT " OR GOTO <M>AIN MENU?"
23500 HTAB 40: VTAB 18: GET X$
23510 IF X$ = "R" OR X$ = "r" THEN GOSUB 14000: GOTO 4000
23520 IF X$ = "P" OR X$ = "p" THEN 21000
23530 IF X$ = "`" OR X$ = "~" THEN 30000
23540 IF X$ = "M" OR X$ = "m" THEN GOSUB 14000: GOTO 40000
23550 IF X$ < >"m" THEN 23478
23560 END
30000 REM SAVE RECONCILIATION DATA
31010 M = 1
31030 PRINT D$;"OPEN /RAM/MAIN.DATA,L$96"
31040 FOR I = BTN TO FTN% -1
31060 PRINT D$;"READ /RAM/MAIN.DATA,R";I
31070 INPUT TN%
31080 INPUT DT$
31090 INPUT CN$
31100 INPUT AMT$
31120 GOSUB 63000: LET PY$ = IN$
31130 INPUT R$
31150 INPUT CTG$
31160 GOSUB 63000: LET MEM$ = IN$
31170 PRINT D$
31180 IF R$(M) = "R" THEN R$ = "R"
31190 IF RO$(M) = "R" THEN R$ = "R"
32000 PRINT D$;"WRITE /RAM/MAIN.DATA,R";I
32010 PRINT TN%
32020 PRINT DT$
32030 PRINT CN$
32040 PRINT AMT$
32050 PRINT PY$
32060 PRINT R$
32140 PRINT CTG$
32150 PRINT MEM$
32160 PRINT D$
32180 M = M +1
32190 NEXT
32195 PRINT D$;"CLOSE /RAM/MAIN.DATA"
35000 PRINT D$;"OPEN /RAM/RECON.BAL.DATA"
35010 PRINT D$;"WRITE /RAM/RECON.BAL.DATA"
35020 PRINT PRB$
35030 PRINT D$;"CLOSE /RAM/RECON.BAL.DATA"
35040 RBL = 0
35050 FOR I = 1 TO 100
35060 R$(I) = " "
35070 NEXT
40000 REM TO MAIN MENU
40010 POKE 216,0
40020 PRINT D$;"CHAIN /RAM/CW,@4005"
50000 REM ONERR ROUTINE
50010 PRINT D$;"CLOSE"
50020 HOME
50030 HTAB 29: VTAB 8
50040 PRINT "ERROR #"; PEEK(222);" IN LINE "; PEEK(218) + PEEK(219) *256
50050 IF PEEK(222) = 5 THEN 50100
50060 GOTO 50200
50100 HTAB 18: VTAB 11
50110 PRINT "YOU HAVE INSUFFICIENT DATA FOR THIS SEARCH"
50200 HTAB 26: VTAB 14
50210 PRINT "PRESS <ANY KEY> TO CONTINUE"
50220 HTAB 40: VTAB 16
50230 GET X$
50240 CALL -3288: GOTO 40000
60000 END
62000 REM INPUT ANYTHING
62010 LET IN$ = "X"
62020 FOR J = 768 TO 790
62030 READ I
62040 POKE J,I
62050 NEXT J
62060 DATA 162,0,32,117,253,160,2,138,145,105,200,169,0,145,105,200,169,2,145,105,76,57,213
62070 RETURN
63000 REM CALL ANYTHING
63010 CALL 768
63020 IN$ = MID$ (IN$,1)
63030 RETURN